```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>设计模式精要 - 现代软件开发的艺术</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        .hero {
            background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
        }
        .pattern-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
        }
        .section-title::after {
            content: '';
            display: block;
            width: 60px;
            height: 4px;
            background: #4f46e5;
            margin: 12px 0 20px;
            border-radius: 2px;
        }
        .drop-cap::first-letter {
            font-size: 3.5em;
            float: left;
            line-height: 0.8;
            margin: 0.1em 0.2em 0 0;
            color: #4f46e5;
            font-weight: bold;
        }
        .framework-badge {
            transition: all 0.3s ease;
        }
        .framework-badge:hover {
            background-color: #4f46e5;
            color: white;
        }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Hero Section -->
    <section class="hero text-white py-20 px-4 md:py-32">
        <div class="container mx-auto max-w-5xl px-4">
            <div class="flex flex-col md:flex-row items-center">
                <div class="md:w-1/2 mb-10 md:mb-0">
                    <h1 class="text-4xl md:text-5xl font-bold mb-4 font-serif">设计模式的艺术</h1>
                    <p class="text-xl md:text-2xl mb-8 opacity-90">构建优雅、可维护软件的通用解决方案</p>
                    <div class="flex space-x-4">
                        <a href="#patterns" class="bg-white text-indigo-600 px-6 py-3 rounded-lg font-medium hover:bg-gray-100 transition duration-300">
                            <i class="fas fa-shapes mr-2"></i>探索模式
                        </a>
                        <a href="#applications" class="border border-white text-white px-6 py-3 rounded-lg font-medium hover:bg-white hover:bg-opacity-10 transition duration-300">
                            <i class="fas fa-laptop-code mr-2"></i>实际应用
                        </a>
                    </div>
                </div>
                <div class="md:w-1/2 flex justify-center">
                    <img src="https://cdn.nlark.com/yuque/0/2024/png/21449790/1707290326101-9fa0dfba-b930-4a5c-aaec-6b03fcbe3380.png" 
                         alt="设计模式" 
                         class="w-full max-w-md rounded-lg shadow-2xl border-4 border-white">
                </div>
            </div>
        </div>
    </section>

    <!-- Introduction Section -->
    <section class="py-16 px-4 bg-white">
        <div class="container mx-auto max-w-5xl">
            <div class="mb-12 text-center">
                <h2 class="text-3xl font-bold mb-2 font-serif">为什么需要设计模式？</h2>
                <p class="text-gray-600 max-w-3xl mx-auto">设计模式是软件开发中的通用解决方案，旨在解决软件设计中的常见问题</p>
            </div>
            
            <div class="prose max-w-none drop-cap">
                <p>设计模式是软件开发中的通用解决方案，旨在解决软件设计中的常见问题。它们提供了一套经过验证的模板，可以帮助开发人员更好地组织和设计代码。设计模式的作用是多方面的。设计模式改善了代码结构。通过遵循设计模式，开发人员可以使用已经验证的结构来组织代码，使得代码更加清晰、易读、易维护。设计模式降低了代码的耦合度。模式的使用使得各个组件之间的依赖关系更加清晰，并且降低了它们之间的耦合度，使得代码更加灵活、可扩展。设计模式还促进了代码的复用。通过应用设计模式，开发人员可以将经过验证的解决方案应用到不同的项目中，从而提高了代码的复用性，减少了重复编码的工作量。</p>
            </div>
        </div>
    </section>

    <!-- Pattern Categories Section -->
    <section id="patterns" class="py-16 px-4 bg-gray-50">
        <div class="container mx-auto max-w-5xl">
            <div class="mb-12 text-center">
                <h2 class="text-3xl font-bold mb-2 font-serif">设计模式的分类</h2>
                <p class="text-gray-600">设计模式可以按照类别分为三类：创建型模式、结构型模式和行为型模式</p>
            </div>
            
            <!-- Mermaid Diagram -->
            <div class="bg-white p-6 rounded-xl shadow-md mb-12">
                <div class="mermaid">
                    graph TD
                    A[设计模式] --> B[创建型模式]
                    A --> C[结构型模式]
                    A --> D[行为型模式]
                    B --> B1[单例模式]
                    B --> B2[工厂模式]
                    B --> B3[抽象工厂模式]
                    B --> B4[建造者模式]
                    C --> C1[适配器模式]
                    C --> C2[装饰器模式]
                    C --> C3[代理模式]
                    C --> C4[外观模式]
                    D --> D1[观察者模式]
                    D --> D2[策略模式]
                    D --> D3[命令模式]
                    D --> D4[模板方法模式]
                </div>
            </div>
            
            <!-- Creation Patterns -->
            <div class="mb-16">
                <div class="flex items-center mb-6">
                    <div class="bg-indigo-100 p-3 rounded-full mr-4">
                        <i class="fas fa-cubes text-indigo-600 text-xl"></i>
                    </div>
                    <h3 class="text-2xl font-bold font-serif section-title">创建型模式</h3>
                </div>
                <p class="text-gray-700 mb-6">这类设计模式关注对象的创建机制，旨在将对象的实例化过程更加灵活、高效，从而降低系统的耦合度。</p>
                
                <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-indigo-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-cube text-indigo-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">单例模式</h4>
                                <p class="text-gray-600 text-sm">确保一个类只有一个实例，全局可访问</p>
                            </div>
                        </div>
                        <p class="text-gray-700">通过私有化构造函数和提供一个全局访问点来确保系统中一个类只有一个实例，常用于配置管理、日志记录等场景。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-indigo-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-industry text-indigo-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">工厂模式</h4>
                                <p class="text-gray-600 text-sm">将对象的创建和使用分离，通过工厂来创建对象</p>
                            </div>
                        </div>
                        <p class="text-gray-700">定义一个创建对象的接口，但由子类决定要实例化哪个类，使代码更灵活，降低耦合度。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-indigo-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-cogs text-indigo-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">抽象工厂模式</h4>
                                <p class="text-gray-600 text-sm">提供一系列相关或相互依赖对象的接口</p>
                            </div>
                        </div>
                        <p class="text-gray-700">提供一个接口来创建一系列相关或相互依赖的对象，而无需指定它们具体的类。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-indigo-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-hammer text-indigo-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">建造者模式</h4>
                                <p class="text-gray-600 text-sm">分离复杂对象的构建过程和表示</p>
                            </div>
                        </div>
                        <p class="text-gray-700">将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。</p>
                    </div>
                </div>
            </div>
            
            <!-- Structural Patterns -->
            <div class="mb-16">
                <div class="flex items-center mb-6">
                    <div class="bg-green-100 p-3 rounded-full mr-4">
                        <i class="fas fa-sitemap text-green-600 text-xl"></i>
                    </div>
                    <h3 class="text-2xl font-bold font-serif section-title">结构型模式</h3>
                </div>
                <p class="text-gray-700 mb-6">这类设计模式关注类和对象的组合方式，帮助我们构建更大的结构，如如何将对象和类组装成更大的系统。</p>
                
                <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-green-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-plug text-green-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">适配器模式</h4>
                                <p class="text-gray-600 text-sm">将不同接口的类适配成统一接口</p>
                            </div>
                        </div>
                        <p class="text-gray-700">将一个类的接口转换成客户希望的另一个接口，使原本由于接口不兼容而不能一起工作的类可以一起工作。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-green-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-paint-brush text-green-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">装饰器模式</h4>
                                <p class="text-gray-600 text-sm">动态地给对象添加新的功能</p>
                            </div>
                        </div>
                        <p class="text-gray-700">动态地给一个对象添加一些额外的职责，就增加功能来说，装饰器模式相比生成子类更为灵活。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-green-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-user-shield text-green-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">代理模式</h4>
                                <p class="text-gray-600 text-sm">控制对象的访问</p>
                            </div>
                        </div>
                        <p class="text-gray-700">为其他对象提供一种代理以控制对这个对象的访问，常用于远程代理、虚拟代理、保护代理等场景。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-green-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-door-open text-green-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">外观模式</h4>
                                <p class="text-gray-600 text-sm">简化复杂系统的接口</p>
                            </div>
                        </div>
                        <p class="text-gray-700">为子系统中的一组接口提供一个一致的界面，外观模式定义了一个高层接口，使得这一子系统更加容易使用。</p>
                    </div>
                </div>
            </div>
            
            <!-- Behavioral Patterns -->
            <div>
                <div class="flex items-center mb-6">
                    <div class="bg-purple-100 p-3 rounded-full mr-4">
                        <i class="fas fa-people-arrows text-purple-600 text-xl"></i>
                    </div>
                    <h3 class="text-2xl font-bold font-serif section-title">行为型模式</h3>
                </div>
                <p class="text-gray-700 mb-6">这类设计模式关注对象之间的通信和协作方式，帮助我们定义对象的职责和交互方式。</p>
                
                <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-purple-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-bell text-purple-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">观察者模式</h4>
                                <p class="text-gray-600 text-sm">一对多的依赖关系，状态改变通知</p>
                            </div>
                        </div>
                        <p class="text-gray-700">定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-purple-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-chess-knight text-purple-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">策略模式</h4>
                                <p class="text-gray-600 text-sm">封装算法，使其可互换</p>
                            </div>
                        </div>
                        <p class="text-gray-700">定义一系列的算法，把它们一个个封装起来，并且使它们可相互替换，使得算法可以独立于使用它的客户而变化。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-purple-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-terminal text-purple-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">命令模式</h4>
                                <p class="text-gray-600 text-sm">将请求封装为对象</p>
                            </div>
                        </div>
                        <p class="text-gray-700">将一个请求封装为一个对象，从而使你可用不同的请求对客户进行参数化，对请求排队或记录请求日志，以及支持可撤销的操作。</p>
                    </div>
                    
                    <div class="pattern-card bg-white p-6 rounded-lg shadow-md transition duration-300">
                        <div class="flex items-start mb-4">
                            <div class="bg-purple-100 p-2 rounded-lg mr-4">
                                <i class="fas fa-layer-group text-purple-600"></i>
                            </div>
                            <div>
                                <h4 class="font-bold text-lg">模板方法模式</h4>
                                <p class="text-gray-600 text-sm">定义算法骨架，子类实现细节</p>
                            </div>
                        </div>
                        <p class="text-gray-700">定义一个操作中的算法的骨架，而将一些步骤延迟到子类中，使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。</p>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Applications Section -->
    <section id="applications" class="py-16 px-4 bg-white">
        <div class="container mx-auto max-w-5xl">
            <div class="mb-12 text-center">
                <h2 class="text-3xl font-bold mb-2 font-serif">设计模式在框架中的应用</h2>
                <p class="text-gray-600">众多优秀的框架和库都广泛应用了设计模式</p>
            </div>
            
            <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
                <div class="bg-gray-50 p-6 rounded-xl">
                    <div class="flex items-center mb-4">
                        <div class="bg-indigo-100 p-2 rounded-lg mr-4">
                            <i class="fab fa-java text-indigo-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-bold">Spring框架</h3>
                    </div>
                    <p class="text-gray-700 mb-4">Spring使用了大量的设计模式，比如单例模式用于Bean管理，代理模式用于AOP，工厂模式用于对象创建等。</p>
                    <div class="flex flex-wrap gap-2">
                        <span class="framework-badge bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">单例模式</span>
                        <span class="framework-badge bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">代理模式</span>
                        <span class="framework-badge bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">工厂模式</span>
                        <span class="framework-badge bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">模板方法</span>
                    </div>
                </div>
                
                <div class="bg-gray-50 p-6 rounded-xl">
                    <div class="flex items-center mb-4">
                        <div class="bg-green-100 p-2 rounded-lg mr-4">
                            <i class="fas fa-database text-green-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-bold">Hibernate框架</h3>
                    </div>
                    <p class="text-gray-700 mb-4">Hibernate中使用了代理模式实现懒加载，工厂模式创建Session，模板方法模式定义数据访问流程等。</p>
                    <div class="flex flex-wrap gap-2">
                        <span class="framework-badge bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">代理模式</span>
                        <span class="framework-badge bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">工厂模式</span>
                        <span class="framework-badge bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">模板方法</span>
                    </div>
                </div>
                
                <div class="bg-gray-50 p-6 rounded-xl">
                    <div class="flex items-center mb-4">
                        <div class="bg-purple-100 p-2 rounded-lg mr-4">
                            <i class="fab fa-android text-purple-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-bold">Android开发</h3>
                    </div>
                    <p class="text-gray-700 mb-4">Android的Adapter适配器模式用于适配不同的数据源，观察者模式用于UI组件与数据之间的通信。</p>
                    <div class="flex flex-wrap gap-2">
                        <span class="framework-badge bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm">适配器模式</span>
                        <span class="framework-badge bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm">观察者模式</span>
                        <span class="framework-badge bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm">工厂模式</span>
                    </div>
                </div>
                
                <div class="bg-gray-50 p-6 rounded-xl">
                    <div class="flex items-center mb-4">
                        <div class="bg-yellow-100 p-2 rounded-lg mr-4">
                            <i class="fab fa-java text-yellow-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-bold">JDK集合框架</h3>
                    </div>
                    <p class="text-gray-700 mb-4">JDK的ArrayList和LinkedList等集合类中使用了工厂模式来创建对象，同时还使用了迭代器模式来遍历元素。</p>
                    <div class="flex flex-wrap gap-2">
                        <span class="framework-badge bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">迭代器模式</span>
                        <span class="framework-badge bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">工厂模式</span>
                        <span class="framework-badge bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">适配器模式</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Conclusion Section -->
    <section class="py-16 px-4 bg-indigo-50">
        <div class="container mx-auto max-w-5xl text-center">
            <img src="https://cdn.nlark.com/yuque/0/2024/png/21449790/1709270533481-524a8932-fb58-445e-9ec6-c24499494ebd.png" 
                 alt="设计模式总结" 
                 class="w-full max-w-2xl mx-auto mb-8 rounded-lg shadow-md">
            
            <h2 class="text-3xl font-bold mb-4 font-serif">设计模式的重要性</h2>
            <p class="text-gray-700 max-w-3xl mx-auto text-lg mb-8">
                设计模式是软件开发中的重要工具，它们不仅可以帮助我们构建更好的软件架构，还可以提高代码的可维护性、可重用性和灵活性。在选择设计模式时，需要根据问题的特点和需求进行合理的选择，以达到最佳的设计效果。
            </p>
            
            <div class="flex justify-center space-x-4">
                <a href="#patterns" class="bg-indigo-600 text-white px-6 py-3 rounded-lg font-medium hover:bg-indigo-700 transition duration-300">
                    <i class="fas fa-book-open mr-2"></i>深入学习模式
                </a>
                <a href="#applications" class="border border-indigo-600 text-indigo-600 px-6 py-3 rounded-lg font-medium hover:bg-indigo-50 transition duration-300">
                    <i class="fas fa-code mr-2"></i>查看应用实例
                </a>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="bg-gray-900 text-white py-10 px-4">
        <div class="container mx-auto max-w-5xl">
            <div class="flex flex-col md:flex-row justify-between items-center">
                <div class="mb-4 md:mb-0">
                    <h3 class="text-xl font-bold mb-2">技术小馆</h3>
                    <p class="text-gray-400">探索软件设计的艺术与科学</p>
                </div>
                <div>
                    <a href="http://www.yuque.com/jtostring" class="text-indigo-300 hover:text-white transition duration-300">
                        <i class="fas fa-external-link-alt mr-2"></i>http://www.yuque.com/jtostring
                    </a>
                </div>
            </div>
            <div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-500 text-sm">
                &copy; 2024 技术小馆. 保留所有权利.
            </div>
        </div>
    </footer>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: false,
                htmlLabels: true,
                curve: 'basis'
            }
        });
        
        // 平滑滚动
        document.querySelectorAll('a[href^="#"]').forEach(anchor => {
            anchor.addEventListener('click', function (e) {
                e.preventDefault();
                document.querySelector(this.getAttribute('href')).scrollIntoView({
                    behavior: 'smooth'
                });
            });
        });
    </script>
</body>
</html>
```